Storage systems, such as solid state drives (SSDs) including NAND flash memory, are commonly used in electronic systems ranging from consumer products to enterprise-level computer systems. SSDs and similar storage devices are often rated on how fast they can respond to requests from a host device, commonly referred to as read requests, to access and retrieve data from the storage device. Another metric used to rate storage devices is throughput, generally meaning the average number of operations completed per unit of time. A read request triggers a sequence of actions in a storage device that culminates in the host device obtaining the requested data. For example, one action in the sequence of actions performed by a storage device may be translating a logical address for the data requested in the read request to a physical address where that requested data is located.
Each action in the sequence of actions performed by the storage device takes a certain amount of time. When a host is requesting data from a storage device in a sequential read mode, where the storage device receives requests to read large chunks of data that include a consecutive address space, the storage device may operate in a sequential read mode, since it knows where to look to pre-fetch data. The pre-fetched data would be the next amount of data that is sequentially contiguous in the logical address space with the data being retrieved in the current read command. By not waiting for the next read command to arrive and instead predicting the location of the data for that next read command, a storage device may improve performance by starting the sequence of actions for the predicted next read while already working on the prior read command. Although attempting to pre-fetch data in anticipation of a next read command may work for sequential mode read commands where data is contiguous, when the received read commands are for random, rather than sequential, address groups of data, the typical pre-fetch techniques, such as read look ahead mechanisms, may not provide any performance advantage at the storage device, and may, in fact, slow down the storage device and/or increase power usage due to pre-fetching incorrect data.